#pragma GCC optimize(2)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#include <vector>

using namespace std;
using LL = long long;
const int N = 1010;

int n;
bool st[N];
int q[N];
int res[N];



int main(){
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while(T--){
        cin >> n;
        for(int i = 1; i <= n; i ++) st[i] = false;

        for(int i = 1; i <= n; i ++){
            cin >> q[i];
            st[q[i]] = true;
        }

        // for(int i = 1; i <= 3; i ++) cout << st[i] << " ";
        // cout << '\n';

        if(n == 1){
            cout << -1 << '\n';
            continue;
        }

        for(int i = 1; i <= n; i ++){
            for(int j = 1; j <= n; j ++){
                if(!st[j]) continue;
                if(j == q[i]) continue;

                res[i] = j;
                st[j] = false;
                break;
            }
        }
        bool flag = false;
        for(int i = 0; i <= n; i ++){
            if(st[i]){
                res[n] = i; 
                flag = true;
            }
        }

        if(flag) swap(res[n - 1], res[n]);

        

        // if(check()) swap(res[n - 1], res[n]);
        for(int i = 1; i <= n; i ++){
            cout << res[i] << " ";
        }
        cout << '\n';

    }


    return 0;
}